// 要在http://localhost:3000/home.html中打开html
// require() 函数迎来引入模块,每次引用的模块都需要在cmd中下载
// node的模块只需要编写模块名
// 会自动去node_modules文件夹中运行相关的文件

// express 是用来搭建服务器的模块
// npm install --save express
const express = require('express');
// 引入bodyParser模块,在接收post请求前对服务器先进行配置

const bodyParser = require("body-parser");
// 解析form-data数据格式的模块   +
const multer = require("multer");
const fs = require("fs"); // +

// 传递的form-data中如果有文件信息;设置储存位置  +
const img = multer({dest:"www/img"});

// 生成一个服务器对象
const app = express();

// express.static("www") 获取一个文件夹的函数对象
// app.use();给app这个服务对象配置
// 配置静态目录
app.use(express.static("www"));
// 配置bodyParser 那么之后接收到的post请求的数据都会直接先被
// bodyParser解析urlencoded数据格式的数据
app.use(bodyParser.urlencoded({ extended: false }))

// app.get() 用来接收处理get请求
// 参数1是请求名称 (请求路径)
// 参数2是回调函数 
// 会在监听到客户端向这个请求地址发送请求时执行
app.get("/getTwo", function (req, res) {
    console.log("接收到getTwo请求了");
    // 获取get请求传递过来的请求参数
    console.log(req.query);
    // res设置响应数据
    res.send("成功了");
})

// post()用来接收post请求
// node接收到的post请求的数据,不能直接读取
// 需要先进性解析
// 需要通过body-parser模块进行解析
// npm install --save body-parser
// single("myfile") 对单个文件进行处理(保存)  +
app.post("/postOne",img.single("myfile"),function(req,res){
        // req.body 获取post请求传递过来的数据
        console.log("====");
        console.log(req.file); //获取文件对象  +
        console.log(req.body); //获取除了文件对象之外的其他属性  +
        
        // fs提供的可以更改文件名的方法  +
        var a = `www/img/${req.file.filename}`;
        var b = `www/img/${req.file.originalname}`;
        fs.rename(a,b,(err)=>{
            if(!err){
                console.log("文件名替换成功");
            }
        })
    res.send("post响应结束")        
})

// app.post("/postOne", function (req, res) {
//     // req.body 获取post请求传递过来的数据
//     console.log(req.body);

// 设置端口号,8080 和 3000等等可以切换，有时候会被占用
app.listen(3000, () => {
    // 服务器运行成功后的回调函数
    console.log("服务器启动成功,http://localhost:3000");
})